package com.dibang.app.operation.model.impl;

import android.content.Context;
import android.support.annotation.NonNull;
import android.view.View;
import android.view.ViewGroup;

import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.MyLocationStyle;
import com.dibang.app.operation.model.abs.MainModel;
import com.zaaach.citypicker.model.HotCity;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by wxl on 2019/7/24.
 */

public class MainModelImpl implements MainModel {


    @Override
    public @NonNull MyLocationStyle generateLocationStyle(@NonNull Context context) {
        MyLocationStyle myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点，定位点依照设备方向旋转，并且会跟随设备移动。（1秒1次定位）如果不设置myLocationType，默认也会执行此种模式。
        myLocationStyle.interval(2000); //设置连续定位模式下的定位间隔，只在连续定位模式下生效，单次定位模式下不会生效。单位为毫秒。
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW);//只定位一次。
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);//定位一次，且将视角移动到地图中心点。
        myLocationStyle.showMyLocation(true);//设置是否显示定位小蓝点，用于满足只想使用定位，不想使用定位小蓝点的场景，设置false以后图面上不再有定位蓝点的概念，但是会持续回调位置信息。
        myLocationStyle.strokeWidth(0F);
        myLocationStyle.radiusFillColor(android.R.color.transparent);
        View view = new View(context);
        view.setLayoutParams(new ViewGroup.LayoutParams(1, 1));
        myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromView(view));
        return myLocationStyle;
    }


    @Override
    public @NonNull AMapLocationClient generateLocationClient(@NonNull Context context) {
        AMapLocationClient mlocationClient = new AMapLocationClient(context.getApplicationContext());
        AMapLocationClientOption mLocationOption = new AMapLocationClientOption();
        // 设置定位模式为Hight_Accuracy高精度模式，Battery_Saving为低功耗模式，Device_Sensors是仅设备模式
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);
        // 设置是否返回地址信息（默认返回地址信息）
        mLocationOption.setNeedAddress(true);
        // 设置是否只定位一次,默认为false
        mLocationOption.setOnceLocation(false);
        // 设置是否强制刷新WIFI，默认为强制刷新
        mLocationOption.setWifiActiveScan(true);
        // 设置是否允许模拟位置,默认为false，不允许模拟位置
        mLocationOption.setMockEnable(false);
        // 设置定位间隔,单位毫秒,默认为2000ms
        mLocationOption.setInterval(2000);
        // 给定位客户端对象设置定位参数
        mlocationClient.setLocationOption(mLocationOption);
        return mlocationClient;
    }

    @NonNull
    @Override
    public List<HotCity> generateHotCity() {
        List<HotCity> cities = new ArrayList<>();
        cities.add(new HotCity("北京", "北京", "101010100"));
        cities.add(new HotCity("上海", "上海", "101020100"));
        cities.add(new HotCity("广州", "广东", "101280101"));
        cities.add(new HotCity("深圳", "广东", "101280601"));
        cities.add(new HotCity("杭州", "浙江", "101210101"));
        return cities;
    }
}
